package CapaLogica;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Operaciones
{
    public static boolean generarFactura(JFrame ventana, String nombre, String cedula, String ID, String formaPago, String fechaActual) {

        JFileChooser JFC_guardarFactura = new JFileChooser();

        boolean facturaLista;
        String error = "La factura no pudo ser guardada, seleccione otro nombre de archivo";
        String confirmacion =
                "<html>Su reservación ha sido cargada con éxito<br />" +
                "Por favor seleccione una carpeta para guardar la factura.";

        JOptionPane.showMessageDialog(ventana, confirmacion);

        do
        {
            FiltroPDF filtro = new FiltroPDF();
            JFC_guardarFactura.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            JFC_guardarFactura.setFileFilter(filtro);
            JFC_guardarFactura.showSaveDialog(ventana);
            String nombreArchivo = JFC_guardarFactura.getSelectedFile().getPath();
            if (!nombreArchivo.endsWith(".pdf"))
                nombreArchivo += ".pdf";

            try
            {
                facturaLista = Operaciones.crearPDF(nombreArchivo, nombre, cedula, ID, formaPago, fechaActual);
            }
            catch (DocumentException e) { facturaLista = false; }
            catch (IOException e)       { facturaLista = false; }

            if (!facturaLista)
                JOptionPane.showConfirmDialog(ventana, error);
        }
        while (!facturaLista);

        return true;
    }

    public static boolean crearPDF (String archivo, String nombre, String cedula, String ID, String formaPago, String fechaActual) throws DocumentException, IOException {

        String mensaje = ComunicacionServidor.obtenerMontoReserva(cedula, ID);
        String resultado[] = mensaje.split(":");

        if (resultado[0].equals("FALSE"))
            return false;

        String monto = resultado[1];

        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream(archivo));
        document.open();

        document.add(new Paragraph("Nombre: " + nombre));
        document.add(new Paragraph("Cedula: " + cedula));
        document.add(new Paragraph("Monto: " + monto + " Bs.F."));
        document.add(new Paragraph("Forma de Pago: " + formaPago));
        document.add(new Paragraph("Fecha: " + fechaActual));

        document.close();

        return true;
    }
}